Rappresentazione intermedia

Una rappresentazione intermedia è la struttura dati o il codice usato internamente da un compilatore o macchina virtuale per rappresentare il codice sorgente. La rappresentazione intermedia è progettata per agevolare un'ulteriore elaborazione, in termini di ottimizzazione o traduzione.[1] Una "buona" rappresentazione deve essere accurata – in grado di rappresentare il codice sorgente senza perdita di informazioni[2] – e indipendente dal linguaggio di partenza e di arrivo.[1] Una rappresentazione intermedia può essere una struttura dati in memoria o uno speciale codice basato su pila o tupla leggibile dal programma.[3] Nel secondo caso, si parla di linguaggio intermedio.

Un tipico esempio è da trovarsi nei compilatori più moderni. L'interprete di CPython trasforma il testo leggibile che rappresenta un programma in una struttura intermedia a grafo che permette l'analisi del flusso e il riordino prima dell'esecuzione. L'uso di una rappresentazione intermedia come questa permette a sistemi compilatori come GNU Compiler Collection e LLVM di essere adoperati da molti diversi linguaggi di partenza per generare codice adatto a svariate architetture.

  1. ^ a b David Walker, CS320: Compilers: Intermediate Representation (PDF), su cs.princeton.edu. URL consultato il 12 febbraio 2016.
  2. ^ Fred Chow, The Challenge of Cross-language Interoperability, in ACM Queue, vol. 11, n. 10, 22 novembre 2013. URL consultato il 12 febbraio 2016.
  3. ^ Ray Toal, Intermediate Representations, su cs.lmu.edu. URL consultato il 12 febbraio 2016.

Developed by StudentB